package net.sahv.bdyz.controller.admin;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;

import net.sahv.bdyz.model.FabricFilter;
import net.sahv.bdyz.service.FabricFilterService;
import net.sahv.bdyz.service.FabricService;
import net.sahv.bdyz.util.PagingUtil;

/**
 * @author 作者 : 任凯伟
 * @date 创建时间：2016年8月6日 上午11:26:40
 * @version 1.0
 * @see 面料属性
 */
@Controller
@RequestMapping("admin/fabricFilter")
public class FabricFilterController {
	@Autowired
	private FabricFilterService fabricFilterService;
	@Autowired
	private FabricService fabricService;

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月6日 上午11:28:40
	 * @version 1.0
	 * @see 面料属性首页
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping("/index")
	public String index() {
		return "admin/fabricFilter/list";
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月6日 上午11:43:38
	 * @version 1.0
	 * @see 异步获取面料属性
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/list")
	public JSON getList(PagingUtil pagingUtil, HttpServletRequest request, Model model) {
		String sortField = "";
		String where = " where f.FF_IS_DELETE=0 and f.FF_PARENT_ID!=0";
		Map<String, Object> param = new HashMap<String, Object>();

		param.put("start", pagingUtil.getiDisplayStart());
		param.put("length", pagingUtil.getiDisplayLength());
		param.put("where", where);
		param.put("sortField", " order by f.FF_CREATE_TIME desc");

		List<Map<String, Object>> ffList = fabricFilterService.getList(param);
		// 统计信息的总条数
		Integer totalCount = fabricFilterService.getTotalCount(where);

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("aaData", ffList);
		// 查出来总共有多少条记录
		map.put("iTotalRecords", totalCount);
		map.put("iTotalDisplayRecords", totalCount);
		map.put("sEcho", pagingUtil.getsEcho());
		return (JSON) JSON.toJSON(map);
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月6日 下午3:38:55
	 * @version 1.0
	 * @see 跳转到添加面料属性页面
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping("/toAddPage")
	public String toAddPage(Model model) {
		List<FabricFilter> ffList = fabricFilterService.findParentList();
		model.addAttribute("parent", ffList);
		return "admin/fabricFilter/add";
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月6日 下午4:16:50
	 * @version 1.0
	 * @see 新增面料属性
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/save", method = RequestMethod.POST)
	public ApiResult save(FabricFilter ff) {
		ApiResult result = new ApiResult();
		ff.setFfIsDelete(0);
		int flag = fabricFilterService.insert(ff);
		if (flag == 1) {
			result.msg.status = 0;
			result.msg.desc = "添加成功！";
		} else if (flag == 0) {
			result.msg.status = 1;
			result.msg.desc = "添加失败！";
		}
		return result;
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月6日 下午4:43:42
	 * @version 1.0
	 * @see 删除面料属性
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/delete", method = RequestMethod.POST)
	public ApiResult delete(Integer[] id) {
		ApiResult result = new ApiResult();
		int flag = 0;
		Integer[] tmp = new Integer[id.length];// 临时数组
		int idx = 0;// 常量
		if (id.length > 0) {
			for (int i : id) {
				int count = 0;
				count = fabricService.getCountFabricFilter(i);
				if (count == 0) {
					tmp[idx] = i;
					idx++;
				}
			}
			flag = fabricFilterService.delete(tmp);
		}
		if (flag > 0) {
			result.msg.status = 0;
			result.msg.desc = "删除成功！共删除" + flag + "条数据！其中" + (id.length - idx) + "条数据下尚存在面料！";
		} else if (flag == 0 && id.length == 1) {
			result.msg.status = 1;
			result.msg.desc = "删除失败！该数据下尚存在面料！";
		} else {
			result.msg.status = 1;
			result.msg.desc = "删除失败！该数据下尚存在面料！";
		}
		return result;
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月6日 下午5:12:12
	 * @version 1.0
	 * @see 跳转到修改页面
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping("/toUpdatePage")
	public String toUpdate(Integer id, Model model) {
		List<FabricFilter> ffList = fabricFilterService.findParentList();
		if (id != null) {
			FabricFilter ff = fabricFilterService.findById(id);
			model.addAttribute("ff", ff);
		}
		model.addAttribute("parent", ffList);
		return "admin/fabricFilter/update";
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月6日 下午5:30:01
	 * @version 1.0
	 * @see 修改面料属性
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/update", method = RequestMethod.POST)
	public ApiResult update(FabricFilter ff) {
		ApiResult result = new ApiResult();
		FabricFilter fFilte = fabricFilterService.findById(ff.getFfId());
		fFilte.setFfName(ff.getFfName());
		fFilte.setFfNameEn(ff.getFfNameEn());
		fFilte.setFfParentId(ff.getFfParentId());
		int flag = fabricFilterService.update(fFilte);
		if (flag == 1) {
			result.msg.status = 0;
			result.msg.desc = "修改成功！";
		} else if (flag == 0) {
			result.msg.status = 1;
			result.msg.desc = "修改失败！";
		}
		return result;
	}

}
 